﻿using System.Data.Objects;
using System.Linq;

namespace TestFileSystem.Models
{
    public interface IRepository<T> where T : class
    {
        /// <summary>
        /// ВОзвращает список объектов типа T
        /// </summary>
        /// <typeparam name="T">Тип возвращаемых объектов</typeparam>
        ObjectSet<T> GetAllObjects();

        /// <summary>
        /// Вставляет объект типа T
        /// </summary>
        /// <param name="newObject">Вставляемый объект</param>
        void InsertObject(T newObject);
        
        /// <summary>
        /// Возвращает объект типа Т по идентификатору
        /// </summary>
        /// <param name="id">Идентификатор объекта</param>
        /// <returns>Объект типа Т</returns>
        T GetObjectById(int id);

        /// <summary>
        /// Обновляет объект
        /// </summary>
        /// <param name="updatedObject">Обновляемый объект</param>
        void UpdateObject(T updatedObject);
    }
}
